package cn.wen.javax.xml.oxm;

import org.apache.commons.digester.Digester;

/**
 * Title: Digester OXM
 * <p>
 * Description: Java 序列化相关的辅助类，主要功能：（Object => Xml），（Object <= Xml）。
 * <p>
 * Copyright: Copyright (c) 2010-2012
 * 
 * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
 * @version Revision: 1.0 Date: 2011/4/14 description：初完成。
 *          </P>
 */
public class HelperOfDigester {

    /**
     * <PRE>
     * 在Digester 栈中查找， 从beginLevel级别开始，找到符合的类型便返回，
     * 或直至顶栈始终未查找到匹配，返回null。
     * </PRE>
     * 
     * @param digester Digester对象
     * @param clz 指定（匹配）类型
     * @param beginLevel 开始级别
     * @return Object or Null
     */
    @SuppressWarnings("unchecked")
    public static <T> T peek(Digester digester, Class<T> clz, int beginLevel) {
	Object obj = null;
	int count = digester.getCount();
	if (count <= beginLevel) {
	    return (T) obj;
	}
	while (beginLevel < count) {
	    obj = digester.peek(beginLevel++);
	    if (clz.isInstance(obj)) {
		break;
	    }
	}
	return (T) obj;
    }

}
